// 输入一个正整数 target ，输出所有和为 target 的连续正整数序列（至少含有两个数）。

// 序列内的数字由小到大排列，不同序列按照首个数字从小到大排列。

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

#include<bits/stdc++.h>
using namespace std;

// 滑动窗口
// 执行用时：
// 4 ms
// , 在所有 C++ 提交中击败了
// 63.42%
// 的用户
// 内存消耗：
// 6.6 MB
// , 在所有 C++ 提交中击败了
// 30.35%
// 的用户


// 时间复杂度n


class Solution {
public:
    vector<vector<int>> findContinuousSequence(int target) {
        vector<vector<int>> res;
        if(target<1){
            return res;
        }
        int left = 1;
        int left2=2;
        int right = (target+1)/2;
        int sum = 1;
        while(left<right){
            if(sum ==target){
                vector<int> vec;
                for(int i=left;i<left2;++i){
                    vec.emplace_back(i);
                }
                res.emplace_back(vec);
                ++left;
                left2 = left + 1;
                sum = left;
            }
            else if(sum>target){
                sum = sum - left;
                ++left;
            }
            else{
                sum = sum+left2;
                ++left2;
            }
        }
        return res;
    }
};